Skip to main content

8-dars. OOP(Object Oriented Programming). Encapsulation and Abstraction

Dars maqsadlari:

  • Encapsulation (Kapsulyatsiya)
    • Kapsulyatsiya tushunchasini tushunish.
    • Python dasturlash tilida kapsulyatsiyani qanday amalga oshirishni o'rganish.
    • Kapsulyatsiyaning afzalliklari va foydalanish usullarini bilish.
  • Abstraction (Abstraktsiya)
    • Abstraktsiya tushunchasini tushunish.
    • Python dasturlash tilida abstraktsiyani qanday amalga oshirishni o'rganish.
    • Abstraktsiyaning afzalliklari va foydalanish usullarini bilish.

Encapsulation (Kapsulyatsiya)

Kirish

Bugun biz OOP (Obyektga Yo'naltirilgan Dasturlash)ning muhim tushunchalaridan biri — Kapsulyatsiya haqida gaplashamiz. Kapsulyatsiya dasturiy ta'minotdagi ma'lumotlar va metodlarni bir joyda saqlash va ularni boshqarish imkoniyatini beradi. Bu, shuningdek, ma'lumotlarning xavfsizligini ta'minlashda muhim rol o'ynaydi.

Kapsulyatsiya Nima?

Kapsulyatsiya — bu OOPda ma'lumotlarni (xususiyatlar) va ularni boshqarish uchun ishlatiladigan metodlarni (funksiyalar) bir joyda to'plash jarayoni. Bu usul orqali ma'lumotlar sir saqlanadi va ularni noto'g'ri ishlatishdan himoya qilinadi. Kapsulyatsiya ma'lumotlarga kirishni nazorat qilish imkoniyatini beradi, shuningdek, kodni yanada xavfsiz va tushunarli qiladi.

Kapsulyatsiyaning Asosiy Tushunchalari

Ommaviy va Maxfiy Ma'lumotlar:

  • Ommaviy (Public): Boshqa sinflardan kirish mumkin.
  • Maxfiy (Private): Faqat sinf ichida foydalanish mumkin. Maxfiy ma'lumotlar "double underscore" (__) bilan belgilanadi.

Python Dasturlash Tilida Kapsulyatsiya

Python dasturlash tilida kapsulyatsiya jarayoni qanday amalga oshiriladi, keling, misol orqali ko'rib chiqamiz.

Kapsulyatsiya Misoli

class BankHisobi:  # BankHisobi sinfi
def __init__(self, ism, balans):
self.ism = ism # Ommaviy xususiyat
self.__balans = balans # Maxfiy xususiyat

def balansni_korish(self): # Ommaviy metod
print(f"{self.ism} ning balans: {self.__balans} so'm.")

def balansni_oshirish(self, summa): # Ommaviy metod
if summa > 0:
self.__balans += summa
print(f"{self.ism} ning balans oshirildi: {self.__balans} so'm.")
else:
print("Iltimos, musbat summa kiriting.")

def balansni_kamaytirish(self, summa): # Ommaviy metod
if 0 < summa <= self.__balans:
self.__balans -= summa
print(f"{self.ism} ning balans kamaytirildi: {self.__balans} so'm.")
else:
print("Balans yetarli emas yoki noto'g'ri summa.")

# Obyekt yaratish
hisob = BankHisobi("Ali", 10000)
hisob.balansni_korish() # Ali ning balans: 10000 so'm.
hisob.balansni_oshirish(5000) # Ali ning balans oshirildi: 15000 so'm.
hisob.balansni_kamaytirish(2000) # Ali ning balans kamaytirildi: 13000 so'm.
hisob.__balans # Bu yerda xato, chunki __balans maxfiy

Izohlar:

  • self.__balans maxfiy xususiyat sifatida e'lon qilindi. Boshqa sinflardan yoki obyektlardan to'g'ridan-to'g'ri kirish mumkin emas.
  • balansni_oshirish va balansni_kamaytirish metodlari orqali maxfiy xususiyatga boshqaruv beriladi.

Kapsulyatsiyaning Afzalliklari

  1. Ma'lumotlarni himoya qilish: Kapsulyatsiya orqali ma'lumotlar maxfiy saqlanadi va noto'g'ri ishlatishdan himoya qilinadi.
  2. Kodning tuzilganligi: Kodni yanada tuzilgan va tushunarli qiladi, chunki ma'lumotlar va metodlar bir joyda bo'ladi.
  3. Qayta ishlatish imkoniyati: Kapsulyatsiya qilingan sinflar oson qayta ishlatilishi va kengaytirilishi mumkin.

Kapsulyatsiya Haqida Qiziqarli Faktlar

  • Kapsulyatsiya tushunchasi dasturiy ta'minot ishlab chiqishda asosiy prinsiplaridan biri hisoblanadi.
  • Java, C++, C# va boshqa ko'plab dasturlash tillarida ham kapsulyatsiya mavjud.
  • Kapsulyatsiya OOPda muhim vazifalardan biri hisoblanadi, chunki bu ma'lumotlarning xavfsizligini ta'minlaydi.

Abstraction (Abstraktsiya)

Kirish

Endi esa OOP (Obyektga Yo'naltirilgan Dasturlash)ning muhim tushunchalaridan biri — Abstraktsiya haqida gaplashamiz. Abstraktsiya dasturiy ta'minotdagi murakkablikni kamaytirish va zarur ma'lumotlarni taqdim etish jarayoni. Abstraktsiya yordamida biz hayotdagi real ob'ektlar va jarayonlarni dasturlashda soddalashtirilgan ko'rinishda ifodalashimiz mumkin.

Abstraktsiya Nima?

Abstraktsiya — bu muhim xususiyatlarni ajratish va uncha muhim bo'lmagan tafsilotlarni e'tibordan chetga surish jarayoni. Masalan, siz mashinani haydashingiz mumkin, lekin sizga mashinaning ichki mexanizmlari haqida bilish shart emas. Sizga faqatgina u qanday ishlashini bilish kifoya.

Abstraktsiya Tushunchalari

  1. Sinflar va Obyektlar: Abstraktsiya sinflar va obyektlar yordamida amalga oshiriladi. Sinflar real dunyodagi ob'ektlarni ifodalaydi, obyektlar esa bu sinflarning aniq ko'rinishlari.
  2. Abstrakt sinflar: Bu sinflar, faqat umumiy xususiyatlarni va metodlarni taqdim etadi, lekin ularning aniq realizatsiyalari yo'q.
  3. Abstrakt metodlar: Bu metodlar abstrakt sinflarda e'lon qilinadi va ularni konkret sinflarda amalga oshirish zarur.

Python Dasturlash Tilida Abstraktsiya

Python dasturlash tilida abstraktsiya qanday amalga oshiriladi? Keling, misol orqali ko'rib chiqamiz.

Abstraktsiya Misoli

from abc import ABC, abstractmethod  # ABC modulidan foydalanamiz

class Hayvon(ABC): # Hayvon sinfi, abstrakt
@abstractmethod
def ovoz(self): # Abstrakt metod
pass # Bu yerda hech qanday kod yo'q, aniq sinflar tomonidan amalga oshiriladi

class It(Hayvon): # It sinfi, Hayvon sinfidagi aniq realizatsiya
def ovoz(self):
return "Barking"

class Mushuk(Hayvon): # Mushuk sinfi, Hayvon sinfidagi aniq realizatsiya
def ovoz(self):
return "Meowing"

# Obyektlar yaratish
it = It()
mushuk = Mushuk()

print(f"It ovozi: {it.ovoz()}") # It ovozi: Barking
print(f"Mushuk ovozi: {mushuk.ovoz()}") # Mushuk ovozi: Meowing

Izohlar:

  • ABC moduli Pythonning abc kutubxonasidan foydalanish orqali abstrakt sinflarni yaratish uchun ishlatiladi.
  • @abstractmethod dekoratori yordamida metod abstrakt sifatida belgilandi va bu metod aniq sinflarda amalga oshirilishi zarur.

Abstraktsiyaning Afzalliklari

  1. Murakkablikni kamaytirish: Abstraktsiya orqali dastur murakkabligini kamaytirish mumkin.
  2. Kodning qayta ishlatilishi: Abstrakt sinflar boshqa sinflar tomonidan qayta ishlatilishi mumkin.
  3. Tuzilishi: Abstraktsiya dasturiy ta'minot tuzilishini yaxshilaydi va tushunarli qiladi.

Abstraktsiya Haqida Qiziqarli Faktlar

  • Abstraktsiya dasturiy ta'minotning muhim prinsiplaridan biridir va bu OOPning asosiy xususiyatlaridan biri hisoblanadi.
  • Java, C++, C# kabi ko'plab dasturlash tillarida ham abstraktsiya mavjud.
  • Abstraktsiya orqali dasturiy ta'minotni osonlik bilan kengaytirish va o'zgartirish mumkin.

Xulosa

Bugun biz OOP (Obyektga Yo'naltirilgan Dasturlash) va kapsulyatsiya tushunchasini ko'rib chiqdik. Kapsulyatsiya orqali ma'lumotlar va ularni boshqaruvchi metodlarni bir joyda saqlash va nazorat qilish imkoniyatini o'rgandik.

Yana OOP (Obyektga Yo'naltirilgan Dasturlash) va abstraktsiya tushunchasini ko'rib chiqdik. Abstraktsiya yordamida muhim xususiyatlarni ajratib, uncha muhim bo'lmagan tafsilotlarni e'tibordan chetga surish jarayonini o'rgandik.

Savollar va Javoblar

  1. Kapsulyatsiya nima?
    • Kapsulyatsiya — bu ma'lumotlar va metodlarni bir joyda saqlash jarayoni bo’lib, bu orqali ma'lumotlar maxfiy saqlanadi.
  2. Maxfiy xususiyatlar qanday belgilanadi?
    • Maxfiy xususiyatlar __ belgisi yordamida belgilanadi.
  3. Kapsulyatsiyaning afzalliklari nimalar?
    • Ma'lumotlarni himoya qilish, kodning tuzilganligi va qayta ishlatish imkoniyatlari.
  4. Python dasturlash tilida kapsulyatsiya qanday amalga oshiriladi?
    • Maxfiy xususiyatlar va ommaviy metodlar orqali.
  5. Abstraktsiya nima?
    • Abstraktsiya — bu muhim xususiyatlarni ajratish va uncha muhim bo'lmagan tafsilotlarni e'tibordan chetga surish jarayonif.
  6. Abstrakt sinf nima?
    • Abstrakt sinf — faqat umumiy xususiyatlar va metodlarni taqdim etadi, lekin aniq realizatsiyalari yo'q.
  7. Python dasturlash tilida abstraktsiya qanday amalga oshiriladi?
    • Abstrakt sinflar va metodlar yordamida.
  8. Abstraktsiyaning afzalliklari nimalar?
    • Murakkablikni kamaytirish, kodning qayta ishlatilishi va tuzilishi.